package main

import (
	"fmt"
)

func main()  {
	var arr [6]int = [6]int {1,2,3,4,5,6}

	//创建切片
	slice := arr[1:5]

	fmt.Println(slice)
	fmt.Println(len(slice))
	fmt.Println(cap(slice))

	fmt.Printf("%p\n",&arr[1])
	fmt.Printf("%p\n",&slice[0])
	
	//用make来创建切片  2表示大小，4表示容量
	//在底层创建一个数组，由切片维护，不可见
	var slice1 []int = make([]int,2,4)
	fmt.Println(slice1)

	//定义一个切片，直接就指定具体数组
	var slice2 []int = []int{1,2,3}
	fmt.Println(cap(slice2))

	slice2 = append(slice2,4,5)
	fmt.Println(slice2)

	var slice3 []int = make([]int, 10)
	copy(slice3,slice)
	fmt.Println(slice3)

	var str string = "hello,world!"
	slice4 := []rune(str)
	slice4[0] = 'z'
	var str2 string = string(slice4)
	fmt.Println(str2)
}

